
import pandas as pd
import matplotlib.pyplot as plt #%matplotlib inline

from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.options.global_options import ThemeType
class AreaCount:
    def __init__(self):
      plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 用来正常显示中文标签
      plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
      plt.figure(figsize=(16,10))
      alldfgbcountrysum=pd.read_csv("data/游戏用户充值数据.csv",encoding='utf-8-sig')
      alldfregiongbmax=alldfgbcountrysum['充值金额'].groupby(alldfgbcountrysum['城市']).sum()
 # # 地图绘制
      regions = list(alldfregiongbmax.keys()) #得到地区列表 例如[四川省成都市,四川省德阳市]
              #列表推导式 将循环直接写入列表的表达式形成新的列表（把旧的列表循环处理产生的元素放入新的列表）

      regions2 = []
      for i in range(len(regions)):
       regions2.append(regions[i])
       regions2
      datas = [(i, alldfregiongbmax[alldfregiongbmax.keys() == i].to_list()) for i in regions2]
      datas = [tuple([data[0][3:],data[1]]) for data in datas]#因为datas这个列表中的数据是一个元组
      imap = (
       Map(
         init_opts=opts.InitOpts(bg_color='rgba(255,250,205,0.2)',
                                width='100%',
                                height='100%',
                                page_title='金额',
                                theme=ThemeType.ROMA,
                                )
        )
        .add("充值金额", datas, "四川", zoom=1)
        .set_global_opts(
        #title_opts=opts.TitleOpts(title="游戏用户充值金额"),#普通用
        title_opts=opts.TitleOpts(title=""),#大屏用
        #legend_opts=opts.LegendOpts(is_show=True), #普通用
        legend_opts=opts.LegendOpts(is_show=False),#大屏用
        #visualmap_opts=opts.VisualMapOpts(max_=50000, min_=1000, is_piecewise=True, split_number=10),#普通用
        visualmap_opts=opts.VisualMapOpts(max_=50000, min_=1000, is_piecewise=False, split_number=10),
     )  # 通过更改max_ ，min_ 来调整地图的颜色![请添加图片描述](https://img-blog.csdnimg.cn/58280443a30949cdbae0f4c35d223ed5.gif)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True))#大屏用
           .render("templates/chinaCitymap.html")
    )
#imap.render_notebook()
AreaCount()

